﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using Chaotic.Core.Mvvm;
using static System.Net.Mime.MediaTypeNames;

namespace Chaotic.Core.RabbonMenu
{
    public class ButtonModel : ViewModelBase
    {
        private string text;
        private int size;

        private string smallImage;

        private string largeImage;

        /// <summary>
        ///     Gets or sets Text.
        /// </summary>
        public string Text
        {
            get
            {
                return this.text;
            }
            set
            {
                this.SetProperty(ref text, value); 
            }
        }

        /// <summary>
        /// Small = 0,Medium,Large
        /// </summary>
        public int Size
        {
            get
            {
                return size;
            }
            set
            {
                size = value;
            }
        }

        public string SmallImage
        {
            get
            {
                return smallImage;
            }
            set
            {
                smallImage = value;
            }
        }

        public string LargeImage
        {
            get
            {
                return largeImage;
            }
            set
            {
                largeImage = value;
            }
        }

        public ICommand ClickCommand { get; set; }
    }

    public class SplitButtonModel : ButtonModel
    {
    }

    public class ButtonGroupModel : ButtonModel
    {
        private bool isSmallGroup;
        private ObservableCollection<ButtonModel> buttons;

        public ButtonGroupModel()
        {
            buttons = new ObservableCollection<ButtonModel>();
        }

        public ObservableCollection<ButtonModel> Buttons
        {
            get
            {
                return buttons;
            }
        }

        public bool IsSmallGroup
        {
            get
            {
                return isSmallGroup;
            }
            set
            {
                isSmallGroup = value;
            }
        }

        VerticalAlignment _verticalType;
        public VerticalAlignment VerticalType
        {
            get
            {
                return _verticalType;
            }
            set
            {
                this.SetProperty(ref _verticalType, value);
            }
        }
        
    }
}
